package main

import "fmt"

// 算术运算符
func main() {
	var (
		a = 5
		b = 2
	)

	fmt.Println(a + b)
	fmt.Println(a - b)
	fmt.Println(a * b)
	fmt.Println(a / b)
	fmt.Println(a % b)
	// 单独的语句
	a++
	a--

	// 关系运算符
	fmt.Println(a == b) // false
	fmt.Println(a >= b) // true
	fmt.Println(a <= b) // false
	fmt.Println(a != b) // true
	fmt.Println(a > b)  // true
	fmt.Println(a < b)  // false

	// 逻辑运算符
	age := 20
	// 若年龄大于18且小于60之间的
	if age > 18 && age < 60 {
		fmt.Println("上班")
	}
	// 若年龄小于18或大于60
	if age < 18 || age > 60 {
		fmt.Println("该吃吃 该喝喝")
	}
	// 取反
	isMarried := false
	if !isMarried {
		fmt.Println("结婚了")
	}

	// 位运算符 针对二进制
	// 5的二进制：101
	// 2的二进制：10
	// & 按位与（两位均为1才为1）
	fmt.Println(5 & 2) // 000
	// | 按位或（两位有一个1就为1）
	fmt.Println(5 | 2) // 111
	// ^ 按位异或（两位不一样则为1）
	fmt.Println(5 ^ 2) // 111
	// << 将二进制左移指定位(将5的二进制为向右移2位)
	fmt.Println(5 << 2) // 10100
	// >> 将二进制右移指定位
	fmt.Println(5 >> 2) // 1

	// 赋值运算符
	var x = 10

	x += 1
	x -= 1
	x *= 1
	x /= 1
	x %= 1

	x <<= 2
	x >>= 2
	x ^= 2
	x |= 2
	x &= 2

}
